筆者決定先處理一個目前閱讀文獻產生的根本性疑惑:為了達成預測噪音發生時間的期待,到底需要多少的統計學基礎
?
先說個故事。
先前因為工作專案需要,筆者曾自學並訓練辨識網站驗證碼 (captcha)
的模型。最後一版交付的模型辨識成功率約 70%
,有達到團隊認為「堪用」的標準,是一筆自豪的「戰功」。
當時我的職位是後端工程師,負責維護資料庫、開發 API 以及撰寫爬蟲。
公司其實並沒有要求我處理 captcha 這一段,只是筆者在自學轉職成工程師之前,曾處理過不少量的資料標記
。(所謂的工人智慧。 Day 05 有提到)在標記的過程中,筆者與一位機器學習工程師有大量的合作。但我對於機器學習的理解,都是那位工程師轉化過的語言
。在開始自學之前,我對機器學習的理解,除了基本中的基本外,只知道有不同階段的模型
、false positve 以及 true positive
(後來才知道叫 confusion matrix
)、文字關聯度
、向量
、機器學習對於文字處理的極限
等。
在做標記工作的時候,就有對自己期許:希望不久的將來也可以自己設計、改良分析方法,訓練模型
。
回到團隊要在兩週內有自動化解 captcha 方案的場景,我就先從個人 side project 開始:
Prototype 繼續移轉到工作的專案改寫、訓練,並封裝成 Docker image。最後看到接手模型的同事電腦,只用了 docker run 一行指令,就成功印出四碼的正確結果,內心的感動真的難以言喻
。
但必須承認即使經過此專案,筆者對於機器學習,除了更進一步理解了 layer
、CNN
、Max Pooling
、onehot-encoding
、激勵函數
、二維矩陣
、epoch
等概念,更多的體悟其實是「知道的愈多,發現自己愈渺小,什麼都不會」
。上一篇提到的 loss function,甚至稍早才回想起當初有用來作為判斷依據。
如何評量模型的好壞
、訓練過程產出許多數值的意義
、以及要如何建立方法(例如選擇激勵函數、或是不同 layer 之間誰先誰後、參數值需要帶多少)
等問題,我是回答不出來的。
我能做到的,只是把標記好的圖片丟進 Keras 和 Tensorflow 的 API,稍微調整參數及設定變數,一知半解地兜出「堪用」的模型。
筆者希望透過這次的專案,可以做到理解資料分析的本質
,能挑選合適的工具(不一定是機器學習)
,並能透過統計的概念衡量成果的好壞
。即使最後我們希望達成的需求看起來很微小。
明天讓我們從資料分析需要多少統計學
的問題出發繼續學習吧!